package editor;

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;

public class Trame extends JPanel implements Serializable
{
    private int selectedRow;
    private EditorTrame editorTrame = new EditorTrame();
    private JButton jButtonAjouter = new JButton();
    private JButton jButtonSupp = new JButton();
    private JLabel jLabel1 = new JLabel();
    private JPanel jPanel1 = new JPanel();
    private JLabel jLabel2 = new JLabel();
    private JLabel jLabel3 = new JLabel();
    private JLabel jLabel4 = new JLabel();
    private GridBagLayout gridBagLayout1 = new GridBagLayout();

    public Trame()
    {
	try
	{
	    jbInit();
	}
	catch(Exception e) {
	    e.printStackTrace();
	}
    }

    private void jbInit() throws Exception
    {
	this.setLayout(null);
	this.setMaximumSize(new Dimension(500, 200));
	this.setMinimumSize(new Dimension(500, 200));
	this.setPreferredSize(new Dimension(217, 137));
	editorTrame.setBounds(new Rectangle(7, 7, 130, 121));
	editorTrame.addChangeSelectListener(new ChangeSelectListener() {
	    public void changeSelectPerformed(ActionEvent e) {
		editorTrame_actionPerformed(e);
	    }
	});
	jButtonAjouter.setBackground(Color.lightGray);
	jButtonAjouter.setBounds(new Rectangle(147, 78, 62, 21));
	jButtonAjouter.setFont(new java.awt.Font("Dialog", 0, 10));
	jButtonAjouter.setOpaque(false);
	jButtonAjouter.setHorizontalTextPosition(SwingConstants.CENTER);
	jButtonAjouter.setMargin(new Insets(2, 1, 2, 1));
	jButtonAjouter.setText("Ajouter");
	jButtonAjouter.addActionListener(new java.awt.event.ActionListener() {
	    public void actionPerformed(ActionEvent e) {
		jButtonAjouter_actionPerformed(e);
	    }
	});
	jButtonSupp.setBackground(Color.lightGray);
	jButtonSupp.setBounds(new Rectangle(147, 106, 62, 22));
	jButtonSupp.setFont(new java.awt.Font("Dialog", 0, 10));
	jButtonSupp.setOpaque(false);
	jButtonSupp.setHorizontalTextPosition(SwingConstants.CENTER);
	jButtonSupp.setMargin(new Insets(2, 1, 2, 1));
	jButtonSupp.setText("Supprimer");
	jButtonSupp.addActionListener(new java.awt.event.ActionListener() {
	    public void actionPerformed(ActionEvent e) {
		jButtonSupp_actionPerformed(e);
	    }
	});

	jLabel1.setBackground(Color.lightGray);
	jLabel1.setForeground(Color.white);
	jLabel1.setText("Trame");
	jPanel1.setBackground(Color.gray);
	jPanel1.setBorder(BorderFactory.createLoweredBevelBorder());
	jPanel1.setBounds(new Rectangle(146, 7, 62, 38));
	jPanel1.setLayout(gridBagLayout1);
	jLabel2.setForeground(Color.white);
	jLabel2.setText("I2C");
	jLabel3.setBackground(Color.lightGray);
	jLabel3.setBorder(BorderFactory.createLoweredBevelBorder());
	jLabel3.setHorizontalAlignment(SwingConstants.CENTER);
	jLabel3.setHorizontalTextPosition(SwingConstants.CENTER);
	jLabel3.setVerticalTextPosition(SwingConstants.TOP);
	jLabel3.setBounds(new Rectangle(182, 53, 25, 17));
	jLabel4.setText("Sel");
	jLabel4.setBounds(new Rectangle(157, 53, 23, 17));
	this.add(editorTrame, null);
	jPanel1.add(jLabel2,  new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0
		,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 19, 2, 9), 6, 0));
	jPanel1.add(jLabel1,  new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0
		,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(2, 10, 0, 9), 3, -2));
	this.add(jButtonSupp, null);
	this.add(jButtonAjouter, null);
	this.add(jLabel3, null);
	this.add(jLabel4, null);
	this.add(jPanel1, null);
    }

    void jButtonAjouter_actionPerformed(ActionEvent e)
    {
	editorTrame.addByte();
    }

    void jButtonSupp_actionPerformed(ActionEvent e)
    {
	editorTrame.removeByte();
    }

    public void dumpTrame()
    {
	byte[] trame = editorTrame.getTrame();
	int l = trame.length;
	for (int i= 0 ; i < l; i++)
	{
	    dumpByte(trame[i]);
	}
	System.out.println();
    }

    void dumpByte(byte b)
    {
	char[] tempChar = new char[8];
	for(int i = 0; i<8; i++)
	{
	    if((b & (0x01 << i)) == 0)
	    {
	    tempChar[7-i]='0';
	}
	else tempChar[7-i] = '1';
	}
	System.out.print( String.valueOf(tempChar) + " ");
    }

    void editorTrame_actionPerformed(ActionEvent e)
    {
	int indice = e.getID();
	//System.out.println("setIndiceCourant");
	jButtonAjouter.setEnabled(indice>=0);
	jButtonSupp.setEnabled(indice>=0);
	setIndiceCourant(e.getID());
    }

    void setIndiceCourant(int ic)
    {
	selectedRow = ic;
	if(ic >= 0)
	    jLabel3.setText(Integer.toString(ic));
	else jLabel3.setText("");
    }

//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    public byte[] getTrameI2c()
    {
	byte[] trame = editorTrame.getTrame();
	return trame;
    }

    public void setTrameI2c(byte[] trame)
    {
	editorTrame.setTrame(trame);
    }

//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    private void writeObject(ObjectOutputStream oos) throws IOException
    {
	oos.defaultWriteObject();
    }

    private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException
    {
	ois.defaultReadObject();
    }

}